<!DOCTYPE HTML>
<title>SVGTransformList, with existing item</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="resources/SVGTransformList-helper.js"></script>

<svg width="200" height="200">
    <circle id="circle1" cx="40" cy="40" r="40" fill="green" transform="scale(2,2)"/>
    <circle id="circle2" cx="40" cy="40" r="40" fill="green" transform="scale(2,2)"/>
</svg>

<script>
test(function() {
  // This is of mutations of a SVGTransformList with an SVGTransform that already exist in a list.

  var svg = document.querySelector("svg");
  var circle1 = document.getElementById("circle1");
  var circle2 = document.getElementById("circle2");

  var translate = svg.createSVGTransform();
  translate.setTranslate(100, 100);

  var scale = svg.createSVGTransform();
  scale.setScale(3, 3);

  var transformList1 = circle1.transform.baseVal;
  var transformList2 = circle2.transform.baseVal;

  // Test appendItem with SVGTransform that already exist in a list.
  transformList1.appendItem(translate);
  transformList2.appendItem(translate);
  assert_equals(transformList1.numberOfItems, 2);
  assert_equals(transformList2.numberOfItems, 2);
  assert_equals(transformList1.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 100.0 100.0]");
  assert_equals(transformList2.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 100.0 100.0]");

  // Test changing SVGTransform value.
  translate.setTranslate(200, 200);
  assert_equals(transformList1.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 200.0 200.0]");
  assert_equals(transformList2.getItem(1).toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 100.0 100.0]");

  // Test insertItemBefore with SVGTransform that already exist in a list.
  transformList1.insertItemBefore(translate,0);
  transformList2.insertItemBefore(translate,0);
  assert_equals(transformList1.getItem(0).toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 200.0 200.0]");
  assert_equals(transformList2.getItem(0).toString(), "type=SVG_TRANSFORM_TRANSLATE matrix=[1.0 0.0 0.0 1.0 200.0 200.0]");
  assert_equals(transformList1.numberOfItems, 3);
  assert_equals(transformList2.numberOfItems, 3);

  // Test replaceItem with SVGTransform that already exist in a list.
  transformList1.replaceItem(scale,2);
  transformList2.replaceItem(scale,2);
  assert_equals(transformList1.getItem(2).toString(), "type=SVG_TRANSFORM_SCALE matrix=[3.0 0.0 0.0 3.0 0.0 0.0]");
  assert_equals(transformList2.getItem(2).toString(), "type=SVG_TRANSFORM_SCALE matrix=[3.0 0.0 0.0 3.0 0.0 0.0]");
  assert_equals(transformList1.numberOfItems, 3);
  assert_equals(transformList2.numberOfItems, 3);

  // Test initialize with SVGTransform that already exist in a list.
  transformList1.initialize(scale);
  transformList2.initialize(scale);
  assert_equals(transformList1.getItem(0).toString(), "type=SVG_TRANSFORM_SCALE matrix=[3.0 0.0 0.0 3.0 0.0 0.0]");
  assert_equals(transformList2.getItem(0).toString(), "type=SVG_TRANSFORM_SCALE matrix=[3.0 0.0 0.0 3.0 0.0 0.0]");
  assert_equals(transformList1.numberOfItems, 1);
  assert_equals(transformList2.numberOfItems, 1);
});
</script>